systemctl指令是系統服務管理器指令,實際上它是將service和chkconfig這兩個命令組合到一起。
了解開機流程,當系統發生問題時,可以更有效的除錯,而 Linux 開機的流程主要會經過以下 6 個步驟:
BIOS
當按下電源按鈕後,最先載入的是 BIOS, BIOS 會載入 CMOS 資料,然後進行自行檢測。之後 BIOS 會從硬碟,CD-ROM,USB 隨身碟等搜尋 boot loader,當 BIOS 從開機啟動裝置順序找到 boot loader 後,會將控制權交給MBR。
MBR(Master Boot Record)
它儲存在啟動裝置的第一個磁區,裡面包含了GRUB的資訊,MBR 會載入及執行GRUB boot loader(grub2,spfdisk等)。
GRUB(Grand Unified Bootloader)
進入 GRUB 後,會出現 splash screen,如果沒有按任何按鈕,幾秒後 GRUB 會自動載入預設的 kernel,如果有安裝多個 kernel,可以在這時選擇想要啟動的 kernel,在 Redhat 7 及 CentOS 7 下, GRUB 的設定檔在 /boot/grub2/grub.cfg(How to Install Grub Customizer in Ubuntu 18.04 LTS)
Kernel
Kernel 會立即載入硬件的設定和載入所有需要的驅動程式。
Init
init 從檔案 /etc/inittab 的 “initdefault” 參數讀取預設 run level,Linux 的 6 個 run level:
Runlevel Scripts
根據不同的 runlevel,系統會在不同的目錄讀取初始化 scripts 啟動,儲存它們的目錄 run level 區分,分別是:
0 : /etc/rc.d/rc0.d
1 : /etc/rc.d/rc1.d
2 : /etc/rc.d/rc2.d
3 : /etc/rc.d/rc3.d
4 : /etc/rc.d/rc4.d
5 : /etc/rc.d/rc5.d
6 : /etc/rc.d/rc6.d
完成啟動 runlevel scripts 後,Linux 便啟動完成。
雖然現在是使用windows系統開啟Ubuntu撰寫,但未來如果要使用到Linux系統,還是很重要的。
http://man.linuxde.net/systemctl
https://www.phpini.com/linux/linux-boot-process
幫備註一下,此篇文章後半段為init的說明,有興趣的話可以看
https://zh.wikipedia.org/zh-tw/Init
若是以Ubuntu作為學習的使用者,在15.04 已切換成Systemd
相關文章: SystemdForUpstartUsers
Systemd 一些文件:
https://www.freedesktop.org/software/systemd/man/systemd.service.html